package main

import "fmt"

func main2() {

	var score int
	fmt.Scan(&score)

	// 通过switch来判断score
	// case , 后面可以写多个条件
	switch score {
	case 100, 95, 91:
		fmt.Println("A")
	case 90:
		fmt.Println("B")
	case 80, 70, 60:
		fmt.Println("C")
	default:
		fmt.Println("other")
	}

	// switch 是可以省略条件的，默认是 switch true
	// switch语句的条件判断值默认是true
	switch {
	case false:
		fmt.Println("false")
	case true:
		fmt.Println("true")
	default:
		fmt.Println("其他")
	}

	//var flag bool
	//switch flag {
	//case score<100 :
	//
	//}
}

//特殊的情况：需要多个条件结果的输出，case穿透 。fallthrough

func main3() {
	a := false

	// 这里的爆红不影响
	switch a {
	case false:
		fmt.Println("1") // 默认只会输出1
		fallthrough      // 在case中 一旦使用了 fallthrough，则会强制执行下一个case语句
	case true:
		fmt.Println("2")
		fallthrough
	case false:
		fmt.Println("3")
		fallthrough
	case true:
		fmt.Println("4")
		fallthrough
	case false:
		fmt.Println("5")
		fallthrough
	default:
		fmt.Println("6")

	}
}

// 退出case穿透
func main4() {

	a := false

	// 这里的爆红不影响  if{....}
	switch a {
	case false: // 基本业务代码
		fmt.Println("1") // 业务代码
		fallthrough      // 在case中 一旦使用了 fallthrough，则会强制执行下一个case语句，不会去判断条件的
	case true: // 善后代码
		fmt.Println("2")
		fallthrough
	case false:
		fmt.Println("3")
		fallthrough
	case true:
		// 判断了一些错误... 跳出终止这个case
		if a == false {
			break
		}
		fmt.Println("4")
		fallthrough
	case false:
		fmt.Println("5")
		fallthrough
	default:
		fmt.Println("6")
	}

	// 如果满足，则返回基本查询结果，和一个状态结果
	// name  success 用户信息  ok 200... 状态码结果.. 其他东西
}

// for循环
// 输出0-10，每输出完一个换行
func main5() {
	// 了解for循环
	//for 参数1：从哪里开始  参数2：到哪里结束 参数3：控制这个循环条件变量（自增和自减）
	for i := 0; i <= 10; i++ {
		fmt.Print(i, " ")
	}
}
func main6() {
	i := 0
	// for 循环可以直接在for循环中定义的变量，作用域就只在 for循环内，外面是无法调用的
	// for + 结束for条件就可以跑起来
	for i <= 5 { //结束条件i = 5就停止了
		i++
	}
	fmt.Println(i)
}

// 死循环
func main7() {
	for {
		fmt.Println("hello,world")
	}
}

// 终止循环
// break ： 结束整个循环，立即停止
// continue ：结束当前这次循环，继续进行下一次循环
func main() {

	for i := 1; i <= 10; i++ {
		if i == 5 {
			//break
			continue // 到这里就结束了当次循环，不会向下了，继续从头开始
		}
		fmt.Print(i, " ")
	}

	fmt.Println()

	for i := 1; i <= 10; i++ {
		if i == 5 {
			break //直接跳出这个循环
		}
		fmt.Print(i, " ")
	}
}
